package com.project.controller;

import com.project.bean.ProductBean;
import com.project.bean.PurchaseCarBean;
import com.project.bean.PurchaseOrderBean;
import com.project.bean.UserBean;
import com.project.service.IPurchaseCarService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.List;

/**
 * 采购车控制器
 */
@RestController
@RequestMapping("purchaseCar")
@RequiresPermissions("purchase:am")
public class PurchaseCarController {
    @Autowired
    private IPurchaseCarService purchaseCarService;
    @RequestMapping("findAll")
    public List<PurchaseCarBean> findAll(HttpServletRequest req){
        UserBean loginUser= (UserBean) req.getSession().getAttribute("loginUser");
       return purchaseCarService.findAll(loginUser.getUserName());
    }

    /**
     * 通过id修改采购的价格、采购数量
     * @param id 采购车ID
     * @param newPrice 新采购价
     * @param newNum 新采购数量
     */
    @RequestMapping("updatePriceNumById")
    public String updatePriceNumById(Integer id,Integer newPrice,Integer newNum){
        purchaseCarService.updatePriceNumById(id, newPrice, newNum);
        return "ok";
    }

    /**
     * 通过采购车id删除购物车商品
     * @param id  采购车id
     */
    @RequestMapping("removeShop")
    public String removeShop(Integer id){
        purchaseCarService.removeShop(id);
        return "ok";
    }

    /**
     * 添加商品
     * 1、判断操作的值，如果是update，那么判断该采购车中是否存在该商品，如果存在，则修改采购车中的采购数量（累加），如果不存在，则新增采购车中的采购数量。
     * 2、如果是add，则完成库存商品的添加（库存数量为0，采购价为null，销售价为null），采购车添加该商品的记录。
     * @param product 商品对象
     */
    @RequestMapping("addPurchaseCar")
    public String addPurchaseCar(ProductBean product, Integer num, HttpServletRequest req, MultipartFile file) throws IOException {
        //文件上传
        String imgPath=null;
        if (file!=null){
            //上传文件名
            String fileName=file.getOriginalFilename();
            //重命名上传文件，防止同名
            imgPath=System.currentTimeMillis()+fileName.substring(fileName.lastIndexOf("."));
            file.transferTo(new File("D:\\java\\stockSalesManange\\stockSales\\src\\main\\resources\\productImg"+imgPath));
        }
        product.setImgPath(imgPath);
        UserBean loginUser= (UserBean) req.getSession().getAttribute("loginUser");
        purchaseCarService.addPurchaseCar(product, num, loginUser.getUserName());
        return "ok";
    }

    /**
     * 将采购商品入库
     * 1、添加采购订单
     * 2、按采购员(登录用户id)查询购物车
     * 3、遍历采购车，循环添加采购明细信息，循环修改库存商品的库存数量（累加）、以及最新采购价
     * 4、根据采购员id清空购物车
     * @param purchaseOrder 采购车订单
     */
    @RequestMapping("addProduct")
    public String addProduct(PurchaseOrderBean purchaseOrder, HttpServletRequest req){
        UserBean loginUser= (UserBean) req.getSession().getAttribute("loginUser");
        purchaseCarService.addProduct(purchaseOrder, loginUser.getUserName());
        return "ok";
    }
}
